
#ifndef ETATROBOT_H
#define ETATROBOT_H

#include <string>
#include <vector>
#include <map>

#include "RobotConcret.h"
#include "EtatRobotAVide.h"
#include "EtatRobotAVideFaceObstacle.h"
#include "EtatRobotEnCharge.h"
#include "EtatRobotEnChargeFaceObstacle.h"



static map<string, EtatRobot *> listeEtats;
static EtatRobot etatInitial;

/**
  * class EtatRobot
  * 
  */

class EtatRobot
{
public:
  
  // Constructors/Destructors
  //  


  /**
   * Empty Constructor
   */
  EtatRobot ( );

  /**
   * Empty Destructor
   */
  virtual ~EtatRobot ( );


  RobotConcret * m_robot;

  /**
   * Set the value of m_robot
   * @param new_var the new value of m_robot
   */
  void setRobot ( RobotConcret * new_var );

  /**
   * Get the value of m_robot
   * @return the value of m_robot
   */
  RobotConcret * getRobot ( );



  /**
   * @param  r
   */
  void avancer (RobotConcret r )
  {
  }


  /**
   * @param  r
   */
  void tourner (RobotConcret r )
  {
  }


  /**
   * @param  r
   */
  void saisir (RobotConcret r )
  {
  }


  /**
   * @param  r
   */
  void poser (RobotConcret r )
  {
  }


  /**
   * @param  r
   */
  void peser (RobotConcret r )
  {
  }


  /**
   * @param  r
   */
  void rencontrerObstacle (RobotConcret r )
  {
  }


  /**
   * @param  r
   */
  void evaluerObstacle (RobotConcret r )
  {
  }


  /**
   * @param  r
   */
  void figer (RobotConcret r )
  {
  }


  /**
   * @param  r
   */
  void repartir (RobotConcret r )
  {
  }



public:


  
  /**
   * Get the value of etatInitial
   * @return the value of etatInitial
   */
  EtatRobot getEtatInitial ( )   {
    return etatInitial;
  }

  /**
   * Get the value of listeEtats
   * @return the value of listeEtats
   */
  map<string, EtatRobot> getListeEtats ( )   {
    return listeEtats;
  }


private:


  void initAttributes ( ) ;

};


#endif // ETATROBOT_H
